﻿#include<iostream>
using namespace std;
int main() {
	string str{ "12345" };

	cout << str[0] << endl;
	cout << (int)&str << " " << (int)&str[0] << " " << (int)&str[1] << endl;//-913179752 -913179744 -913179743

	str = str + "sdaf";
	cout << (int)&str << " " << (int)&str[0] << " " << (int)&str[1] << endl;//后面的sdaf有可能因为当前位置内存不够，与前面的字符串另外动态分配内存到其他内存地址，所以str的内存地址和字符串的地址有可能不同

	const char* baseStr = str.c_str();//c_str()方法能得到一个const char*的指针 指向str储存 字符数据的内存空间
	cout << (int)baseStr << endl;//-913179744

	const char* baseStr1 = str.data();//data()方法的作用和c_str()方法一样，C++17标准下，data()方法得到的是一个char*的指针
	cout << (int)baseStr1 << endl;//-913179744

	string strId{ "id=user;" };
	strId.replace(3, 4, "zhangsan!");
	cout << strId << endl;//id=zhangsan!;

	strId.replace(3, 4, "zhangsan!sdfasdfs", 8);//替换4个字节
	cout << strId << endl;//id=zhangsangsan!;

	strId.erase(3);//第3位后面全部删除掉
	strId.erase(3, 4);
	strId.clear();//第3位后面全部删除掉
	cout << strId << endl;//id=

}